flowchart TD
1((" ")):::current
classDef current stroke: #f96, stroke-width: 2px
Marie-Hélène Burle
November 14, 2023
Yes, there are much simpler text editors, but they pale in comparison (apart from Vim)
And yes, there are now excellent IDEs for Python, Julia, and R without Emacs learning curve
So here are a few of my reasons:
flowchart TD
1((" ")):::current
classDef current stroke: #f96, stroke-width: 2px
flowchart TD
1((" "))---2((" ")):::current
classDef current stroke: #f96, stroke-width: 2px
flowchart TD
1((" "))---2((" "))---3((" ")):::current
classDef current stroke: #f96, stroke-width: 2px
flowchart TD
1((" "))---2((" "))---3((" "))---4((" ")):::current
classDef current stroke: #f96, stroke-width: 2px
flowchart TD
1((" "))---2((" "))---3((" ")):::current---4((" "))
classDef current stroke: #f96, stroke-width: 2px
flowchart TD
1((" "))---2((" ")):::current---3((" "))---4((" "))
classDef current stroke: #f96, stroke-width: 2px
flowchart TD
1((" "))---2((" "))---3((" ")):::current---4((" "))
classDef current stroke: #f96, stroke-width: 2px
flowchart TD
1((" "))---2((" "))---3((" "))-.-4((" ")):::lost
3((" "))---5((" ")):::current
classDef current stroke: #f96, stroke-width: 2px
classDef lost stroke-dasharray: 3 4
flowchart TD
1((" "))---2((" "))---3((" ")):::current-.-4((" ")):::lost
3((" "))---5((" "))
classDef current stroke: #f96, stroke-width: 2px
classDef lost stroke-dasharray: 3 4
flowchart TD
1((" "))---2((" ")):::current---3((" "))-.-4((" ")):::lost
3((" "))---5((" "))
classDef current stroke: #f96, stroke-width: 2px
classDef lost stroke-dasharray: 3 4
flowchart TD
1((" "))---2((" "))---3((" ")):::current-.-4((" ")):::lost
3((" "))---5((" "))
classDef current stroke: #f96, stroke-width: 2px
classDef lost stroke-dasharray: 3 4
flowchart TD
1((" "))---2((" "))---3((" "))-.-4((" ")):::lost
3((" "))---5((" ")):::current
classDef current stroke: #f96, stroke-width: 2px
classDef lost stroke-dasharray: 3 4
%%{init: { 'flowchart': {'rankSpacing':15} } }%%
flowchart TD
1((1)):::current
classDef current stroke: #f96, stroke-width: 2px
%%{init: { 'flowchart': {'rankSpacing':15} } }%%
flowchart TD
1((1))---2((2)):::current
classDef current stroke: #f96, stroke-width: 2px
%%{init: { 'flowchart': {'rankSpacing':15} } }%%
flowchart TD
1((1))---2((2))---3((3)):::current
classDef current stroke: #f96, stroke-width: 2px
%%{init: { 'flowchart': {'rankSpacing':15} } }%%
flowchart TD
1((1))---2((2))---3((3))---4((4)):::current
classDef current stroke: #f96, stroke-width: 2px
%%{init: { 'flowchart': {'rankSpacing':15} } }%%
flowchart TD
1((1))---2((2))---3((3))---4((4))---5((3)):::current
classDef current stroke: #f96, stroke-width: 2px
%%{init: { 'flowchart': {'rankSpacing':15} } }%%
flowchart TD
1((1))---2((2))---3((3))---4((4))---5((3))---6((2)):::current
classDef current stroke: #f96, stroke-width: 2px
%%{init: { 'flowchart': {'rankSpacing':15} } }%%
flowchart TD
1((1))---2((2))---3((3))---4((4))---5((3))---6((2))---7((3)):::current
classDef current stroke: #f96, stroke-width: 2px
%%{init: { 'flowchart': {'rankSpacing':15} } }%%
flowchart TD
1((1))---2((2))---3((3))---4((4))---5((3))---6((2))---7((3))---8((5)):::current
classDef current stroke: #f96, stroke-width: 2px
%%{init: { 'flowchart': {'rankSpacing':15} } }%%
flowchart TD
1((1))---2((2))---3((3))---4((4))---5((3))---6((2))---7((3))---8((5))---9((3))---10((2))---11((3))---12((4))---13((3))---14((2))---15((1)):::current
classDef current stroke: #f96, stroke-width: 2px
flowchart TD
1((" ")):::current
classDef current stroke: #f96, stroke-width: 2px
flowchart TD
1((" "))---2((" ")):::current
classDef current stroke: #f96, stroke-width: 2px
flowchart TD
1((" "))---2((" "))---3((" ")):::current
classDef current stroke: #f96, stroke-width: 2px
flowchart TD
1((" "))---2((" "))---3((" "))---4((" ")):::current
classDef current stroke: #f96, stroke-width: 2px
flowchart TD
1((" "))---2((" "))---3((" ")):::current---4((" "))
classDef current stroke: #f96, stroke-width: 2px
flowchart TD
1((" "))---2((" ")):::current---3((" "))---4((" "))
classDef current stroke: #f96, stroke-width: 2px
flowchart TD
1((" "))---2((" "))---3((" ")):::current---4((" "))
classDef current stroke: #f96, stroke-width: 2px
flowchart TD
1((" "))---2((" "))---3((" "))---4((" "))
3((" "))---5((" ")):::current
classDef current stroke: #f96, stroke-width: 2px
flowchart TD
1((" "))---2((" "))---3((" "))---4((" "))
3((" ")):::current---5((" "))
classDef current stroke: #f96, stroke-width: 2px
flowchart TD
1((" "))---2((" "))---3((" "))---4((" ")):::current
3((" "))---5((" "))
classDef current stroke: #f96, stroke-width: 2px
flowchart TD
1((" ")):::current---2((" "))---3((" "))---4((" "))
3((" "))---5((" "))
classDef current stroke: #f96, stroke-width: 2px
Emacs comes with a Python mode that provides syntax highlighting. For a full IDE experience, there are multiple options, the most popular of which being the elpy package
R is—as Emacs—GNU software and has been integrated with Emacs via the ESS (Emacs Speaks Statistics) package for a very long time
The julia-mode package provides syntax highlighting and the julia-repl package implements a fully functional Julia REPL, optionally with the emacs-libvterm package
ESS also provides an IDE for Julia, but it does not allow for the funky Julia-specific REPL
Another sophisticated option is to use julia-mode with the julia-snail package